home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / share / man-db / chconfig
Text File  |  2008-07-29  |  4KB  |  133 lines

  1. #! /usr/bin/perl -w
  2.  
  3. # chconfig
  4. # Copyright (C) 1999 Fabrizio Polacco <fpolacco@prosa.it>
  5. #
  6. # This file is part of man-db.
  7. #
  8. # man-db is free software; you can redistribute it and/or modify it
  9. # under the terms of the GNU General Public License as published by
  10. # the Free Software Foundation; either version 2 of the License, or
  11. # (at your option) any later version.
  12. #
  13. # man-db is distributed in the hope that it will be useful, but
  14. # WITHOUT ANY WARRANTY; without even the implied warranty of
  15. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16. # GNU General Public License for more details.
  17. #
  18. # You should have received a copy of the GNU General Public License
  19. # along with man-db; if not, write to the Free Software Foundation,
  20. # Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  21. #
  22. # tool to convert the man-db configuration file to the FHS.
  23. # it slurps the file in argument (default /etc/manpath.config) and,
  24. # unless exists in it a single line containing the keyword
  25. #        NOFHS
  26. # it tries to make the changes to comply with FHS.
  27.  
  28. push @ARGV, "/etc/manpath.config" unless @ARGV;
  29.     print "  Upgrading $ARGV[0]\n";
  30.  
  31. my $myum = 0;
  32. my $myusm = 0;
  33. my $mh = 0;
  34. my $mhug = 0;
  35. my $mhob = 0;
  36. my $mhos = 0;
  37. my $mbusm = 0;
  38. my $mbom = 0;
  39.  
  40. push @IN, "  # config file rewritten by tool chconfig\n";
  41. while (<>) {
  42.     warn "  Respecting NOFHS directive.\n" and exit 0
  43.         if m,^\s*NOFHS\s*$,i;
  44.     warn "  Configuration file already processed.\n" and exit 0
  45.         if m/$IN[0]/;
  46.     push @IN, $_;
  47.       # first section
  48.     $myum = $#IN    if m,^MANDATORY_MANPATH\s+/usr/man\s*$, ;
  49.     $myusm = $#IN    if m,^MANDATORY_MANPATH\s+/usr/share/man\s*$, ;
  50.       # second section
  51.     $mhug = $#IN    if m,^MANPATH_MAP\s+/usr/games\s+, ;
  52.     $mhob = $#IN    if m,^MANPATH_MAP\s+/opt/bin\s+, ;
  53.     $mhos = $#IN    if m,^MANPATH_MAP\s+/opt/sbin\s+, ;
  54.     $mh = $#IN    if m,^MANPATH_MAP\s+, ;
  55.       # third section
  56.     if ( m,^MANDB_MAP\s+(/\S+)(?:\s+.*)?$, ) {
  57.         $w = $1 ;
  58.         push @IN3, ( $w =~ s,/,,g) . " $_";
  59.         $mbusm = $#IN    if m,^MANDB_MAP\s+/usr/share/man(?:\s+.*)?$, ;
  60.         $mbom = $#IN    if m,^MANDB_MAP\s+/opt/man(?:\s+.*)?$, ;
  61.     }
  62. }
  63.   # In the third section, if needed, add the lines
  64.   #    MANDB_MAP       /usr/share/man        /var/cache/man/share
  65.   #    MANDB_MAP    /opt/man        /var/cache/man/opt
  66. push @IN3, "3 MANDB_MAP\t/usr/share/man\t/var/cache/man/share\n"    unless $mbusm;
  67. push @IN3, "2 MANDB_MAP\t/opt/man\t/var/cache/man/opt\n"        unless $mbom;
  68.  
  69. $saved = $ARGV . ".orig";
  70. rename $ARGV, ( -e $saved ? $ARGV . "~" : $saved );
  71. open OUT, ">$ARGV" or die "Cannot open output file $ARGV: $!\n";
  72.  
  73. foreach $j (0..$#IN) {
  74.     $_ = $IN[$j];
  75.       # first section
  76.       # MANDATORY_MANPATH section:
  77.       # we have to add 
  78.       #    MANDATORY_MANPATH                       /usr/share/man
  79.       # just after the usual line
  80.       #    MANDATORY_MANPATH                       /usr/man
  81.       # which we leave in place.
  82.     if ( ! $myusm and $j == $myum ) {
  83.         print OUT ;
  84.         print OUT "MANDATORY_MANPATH\t\t\t/usr/share/man\n";
  85.         next;
  86.     }
  87.       # second section
  88.       # MANPATH_MAP section:
  89.       # we change all the manpath_elements from /usr/man to /usr/share/man.
  90.       # we also add the lines
  91.       #    MANPATH_MAP    /usr/games        /usr/share/man
  92.       #    MANPATH_MAP    /opt/bin        /opt/man
  93.       #    MANPATH_MAP    /opt/sbin        /opt/man
  94.       # if they were missing.
  95.     if ( m,^MANPATH_MAP\s+, ) {
  96.         s,(\s+)/usr/man\s*$,$1/usr/share/man\n,;
  97.         print OUT ;
  98.           # only after the last entry of the section!
  99.         if ( $j == $mh ) {
  100.             print OUT "MANPATH_MAP\t/usr/games\t\t/usr/share/man\n"
  101.                 unless $mhug;
  102.             print OUT "MANPATH_MAP\t/opt/bin\t\t/opt/man\n"
  103.                 unless $mhob;
  104.             print OUT "MANPATH_MAP\t/opt/sbin\t\t/opt/man\n"
  105.                 unless $mhos;
  106.         }
  107.         next;
  108.     }
  109.       # third section
  110.       # MANDB_MAP section:
  111.       # in the relative_catpath field, we change all occurrences of
  112.       # /var/catman with /var/cache/man.
  113.       # we also reorder the entries to have longer manpath before.
  114.     if ( m,^MANDB_MAP\s+, ) {
  115.         if ( @IN3 ) {
  116.             foreach (reverse sort @IN3) {
  117.                 ($w,$t,$m,$c) = split;
  118.                 $c = "/var/cache/man/$c"
  119.                     if !$c or $c =~ m/^FSSTND$/i;
  120.                 $c =~ s,/var/catman,/var/cache/man,;
  121.                 print OUT $t, "\t", $m, "\t\t", $c, "\n";
  122.             }
  123.             @IN3 = ();
  124.         }
  125.         next;
  126.     }
  127.       # default
  128.     print OUT;
  129. }
  130.  
  131. __END__
  132.  
  133.